<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        const list = [
          { id: '1001', manager: '管理员', name: '行政部', pid: '' },
          { id: '1002', manager: '管理员', name: '财务部', pid: '' },
          { id: '1003', manager: '管理员', name: '人事部', pid: '' },
          { id: '1004', manager: '巴斯慧', name: '上海事业部', pid: '1001' },
          { id: '1005', manager: '孙财', name: '财务核算部', pid: '1002' },
          { id: '1006', manager: '张飞', name: '税务管理部', pid: '1002' }
        ]

// 存储最终的树结构数据
export function tranListToTreeData(list) {
const  treeList = []
// map 映射数据的对象
const map = {}
// 1. 遍历对象给所有的对象添加一个children属性 值为 []
// 2. 遍历对象使用每个对象的id作为健，当前对象作为值，item.id: item,建立映射关系
list.forEach(item=> {
  // 1. 遍历对象给所有的对象添加一个children属性 值为 []
  item.children = []
  // 2. 遍历对象使用每个对象的id作为健，当前对象作为值，item.id: item,建立映射关系
  map[item.id] = item
})
console.log(list);
console.log(map);
// 3. 遍历list，转换树结构
list.forEach(item=> {
  // 1.找父级，找到父级，将自己添加到父级的children中
  if (item.pid) {
    const parent = map[item.pid]
    parent.children.push(item)
  }else {
    // 2.没有找到父级，说明是一级数据，直接加入到treeList数组中
    treeList.push(item)
  }
})
 // 返回
 return treeList
}

    </script>
</body>
</html>